﻿Public Class FrmMantenimientoMaestroDetalleEditar


    Private mMaestroBE As BE.Maestro
    Private mMaestroBS As BS.Maestro
    Private mListaDetalle As New List(Of Ejemplo.BE.Detalle)
    Private mId As Integer


    Public Property Id() As Integer
        Get
            Return mId
        End Get
        Set(ByVal value As Integer)
            mId = value
        End Set
    End Property

    Private Sub btnOK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOK.Click

        If EditarMaestro() Then
            Me.DialogResult = Windows.Forms.DialogResult.OK
        End If

    End Sub


    Function EditarMaestro() As Boolean

        If DatosValidosMaestro() Then

            mMaestroBS = New BS.Maestro

            mMaestroBE.Nombre = txtNombre.Text.Trim
            mMaestroBE.Descripcion = txtDescripcion.Text.Trim

            Try
                Me.mMaestroBS.Editar(mMaestroBE)
            Catch ex As Exception
                MessageBox.Show("Hubo problemas al editar el maestro", "Error")
                Return False
            End Try

        End If

        txtNombre.Enabled = False
        txtDescripcion.Enabled = False

        Return True
    End Function


    Function DatosValidosMaestro() As Boolean
        Dim primerControl As Control = Nothing
        Dim mensajeDeValidacion As String = String.Empty

        Me.txtNombre.Text = Me.txtNombre.Text.Trim
        Me.txtDescripcion.Text = Me.txtDescripcion.Text.Trim


        If Me.txtNombre.Text = String.Empty Then
            mensajeDeValidacion = "Nombre es requerido"
            primerControl = Me.txtNombre
        End If


        If Me.txtDescripcion.Text = String.Empty Then
            mensajeDeValidacion &= vbCrLf & "Descripción es requerida"

            If primerControl Is Nothing Then
                primerControl = Me.txtDescripcion
            End If

        End If

        If Not primerControl Is Nothing Then
            MessageBox.Show(mensajeDeValidacion, "Validación", MessageBoxButtons.OK)
            primerControl.Focus()
            Return False

        End If

        Return True
    End Function



    Function DatosValidosDetalle() As Boolean
        Dim primerControl As Control = Nothing
        Dim mensajeDeValidacion As String = String.Empty

        Me.txtNombreDetalle.Text = Me.txtNombreDetalle.Text.Trim
        Me.TxtDescripcionDetalle.Text = Me.TxtDescripcionDetalle.Text.Trim


        If Me.txtNombreDetalle.Text = String.Empty Then
            mensajeDeValidacion = "Nombre es requerido"
            primerControl = Me.txtNombreDetalle
        End If


        If Me.TxtDescripcionDetalle.Text = String.Empty Then
            mensajeDeValidacion &= vbCrLf & "Descripción es requerida"

            If primerControl Is Nothing Then
                primerControl = Me.TxtDescripcionDetalle
            End If

        End If

        If Not primerControl Is Nothing Then
            MessageBox.Show(mensajeDeValidacion, "Validación", MessageBoxButtons.OK)
            primerControl.Focus()
            Return False

        End If

        Return True
    End Function


    Private Sub btnInsertarDetalle_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnInsertarDetalle.Click

        HabilitarControlesDetalle(True)
        LimpiarControlesDetalle()
        Me.txtNombreDetalle.Focus()

        Me.btnActualizarDetalle.Enabled = False
        Me.btnEliminarDetalle.Enabled = False

    End Sub

    Private Sub btnActualizarDetalle_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnActualizarDetalle.Click

        If dtgDetalle.SelectedRows.Count = 1 Then
            HabilitarControlesDetalle(True)
            Me.txtNombreDetalle.Focus()
            Me.btnInsertarDetalle.Enabled = False
            Me.btnEliminarDetalle.Enabled = False
            Me.dtgDetalle.Enabled = False
        Else
            MessageBox.Show("Debes seleccionar una fila")
        End If
    End Sub

    Private Sub btnEliminarDetall_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEliminarDetalle.Click
        If dtgDetalle.SelectedRows.Count = 1 Then


            Dim id As Integer
            Dim Id_Maestro As Integer
            Dim detalleBS As New BS.Detalle


            id = dtgDetalle.SelectedRows(0).Cells(0).Value
            Id_Maestro = dtgDetalle.SelectedRows(0).Cells(1).Value



            If MessageBox.Show("Desea eliminar los datos?", "Información", MessageBoxButtons.YesNo) = Windows.Forms.DialogResult.Yes Then

                If (Not detalleBS.Eliminar(id, Id_Maestro)) Then
                    MessageBox.Show("Problemas al Eliminar")
                Else
                    LimpiarControlesDetalle()
                    dtgDetalle.DataSource = Nothing
                    dtgDetalle.DataSource = detalleBS.Obtener(Id_Maestro)
                End If

            End If


        Else
            MessageBox.Show("Debes seleccionar una fila")
        End If
    End Sub

    Private Sub btnGuardarDetalle_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnGuardarDetalle.Click

        Dim detalleBS As New BS.Detalle
        Dim detalleBe As New BE.Detalle

        'Insertar
        If btnInsertarDetalle.Enabled = True Then
            If mMaestroBE Is Nothing Then
                EditarMaestro()
            End If

            If DatosValidosDetalle() Then

                detalleBe.IdMaestro = mMaestroBE.Id
                detalleBe.Nombre = txtNombreDetalle.Text.Trim
                detalleBe.Descripcion = TxtDescripcionDetalle.Text.Trim

                detalleBe = detalleBS.Agregar(detalleBe)

                If detalleBe Is Nothing Then
                    MessageBox.Show("Problemas al insertar el detalle", "Error")
                Else
                    LimpiarControlesDetalle()
                    HabilitarControlesDetalle(False)
                    dtgDetalle.DataSource = Nothing
                    dtgDetalle.DataSource = detalleBS.Obtener(mMaestroBE.Id)
                    Me.btnActualizarDetalle.Enabled = True
                    Me.btnEliminarDetalle.Enabled = True
                    Me.btnInsertarDetalle.Enabled = True
                End If

            End If
            'Editar
        Else

            If DatosValidosDetalle() Then

                detalleBe.Id = CInt(txtNombreDetalle.Tag)
                detalleBe.IdMaestro = mMaestroBE.Id
                detalleBe.Nombre = txtNombreDetalle.Text.Trim
                detalleBe.Descripcion = TxtDescripcionDetalle.Text.Trim

                Try
                    detalleBS.Editar(detalleBe)
                    HabilitarControlesDetalle(False)
                    LimpiarControlesDetalle()
                    dtgDetalle.DataSource = Nothing
                    dtgDetalle.DataSource = detalleBS.Obtener(mMaestroBE.Id)
                    Me.btnActualizarDetalle.Enabled = True
                    Me.btnEliminarDetalle.Enabled = True
                    Me.btnInsertarDetalle.Enabled = True
                    Me.dtgDetalle.Enabled = True
                Catch ex As Exception
                    MessageBox.Show("Problemas al editar el detalle", "Error")
                End Try
            End If

        End If



    End Sub

    Sub LimpiarControlesDetalle()
        Me.txtNombreDetalle.Text = ""
        Me.TxtDescripcionDetalle.Text = ""
    End Sub

    Sub HabilitarControlesDetalle(ByVal Valor As Boolean)
        Me.txtNombreDetalle.Enabled = Valor
        Me.TxtDescripcionDetalle.Enabled = Valor
        Me.btnGuardarDetalle.Enabled = Valor
    End Sub


    Private Sub FrmMantenimientoMaestroDetalleInsertar_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim detalleBS As New Ejemplo.BS.Detalle

        HabilitarControlesDetalle(False)
        mMaestroBS = New BS.Maestro
        mMaestroBE = mMaestroBS.Obtener(Id)

        Me.txtNombre.Text = mMaestroBE.Nombre.Trim
        Me.txtDescripcion.Text = mMaestroBE.Descripcion.Trim

        dtgDetalle.DataSource = Nothing
        dtgDetalle.DataSource = detalleBS.Obtener(mMaestroBE.Id)
    End Sub

    Private Sub dtgDetalle_SelectionChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles dtgDetalle.SelectionChanged


        If dtgDetalle.SelectedRows.Count = 1 Then

            Dim dgvRow As DataGridViewRow

            For Each dgvRow In dtgDetalle.SelectedRows

                Me.txtNombreDetalle.Tag = dgvRow.Cells(0).Value
                Me.txtNombreDetalle.Text = dgvRow.Cells(2).Value.ToString.Trim
                Me.TxtDescripcionDetalle.Text = dgvRow.Cells(3).Value.ToString.Trim

            Next

        End If

    End Sub
End Class